// 这是一个低效率的使用gettimeofday来获取秒定时的应用
// 使用gettimeofday在while循环中连续获得当前的timez信息
// 和之前的时间信息进行比较，如果还没到1s，则等待，否则
// 使用break跳出while循环并打印当前时间，实现每秒打印一次

#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
#include <time.h>

int main(void){

	// 定义两个时间结构体变量，用来记录读取的时间
	struct timeval timeold, timenew;
	
	// 定义timezone结构体，用来存储时区信息
	struct timezone timez;

	// 定义一个时间结构体变量
	time_t timetemp;

	// 分别读取两次时间，如果时间间隔大于1s则退出循环并打印当前时间
	// 如果时间间隔小于1s则记录执行等待
	// 获取第一次的时间
	gettimeofday(&timeold, &timez);


	while(1){
		
		while(1){

			// 获取当前的时间，并比较两次时间的信息
			gettimeofday(&timenew, &timez);

			// 比较两次的时间差
			if((timenew.tv_sec - timeold.tv_sec) >= 1){

				// 更新当前的时间数据
				timeold = timenew;

				// 使用ctime获取当前的时间
				time(&timetemp);

				printf("time: %s\n", ctime(&timetemp));

				break;
			}

		}
				
			// 使用ctime获取当前的时间
//			time(&timetemp);
//			printf("%s", ctime(&timetemp));

	}

	return 0;
}
